package com.zb.vo;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.hibernate.validator.constraints.Length;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;

/**
 * @Author WEN
 * @Date 2023/11/11 0011
 **/
@Data
@ApiModel("编码扫码详情设置内容对象")
public class CodeScanDetailContentSetVo {

    @ApiModelProperty(value = "类型：" +
            "当 type=1 时，当前类型为：dataType= 1- 页面颜色，2-右侧标题，3-左侧图标，4-登记按钮，5-报修按钮；" +
            "当 type=2 时，当前类型值为固定值：dataType=0，val为字符串类型的数组对象" +
            "当 type=3 时，当前类型值为：dataType= 1- 商品信息，2-商品规格，3-商品货号，4-商品价格" +
            "当 type=4 时，当前类型值为固定值：dataType=0，val的值为防伪编码" +
            "当 type=5 时，当前类型值为：dataType= 1- 编码是否激活，2-编码激活时间，3-编码状态，4-编码质保开始时间，5-编码质保到期时间，6-编码登记时间，7-编码查询次数，8-首次查询时间，9-最后查询时间，10-产品入库时间，11-产品出库时间，12-销售经销商" +
            "当 type=6 时，当前类型值为：dataType= 1- 客户登记姓名，2-客户登记手机号，3-客户登记地址" +
            "当 type=7 时，当前类型值为固定值：dataType=0" +
            "当 type=8 时，当前类型值为：dataType= 1-产品简介，2-产品参数，3-产品说明书，4-产品视频，5-故障库" +
            "当 type=9 时，当前类型值为固定值：dataType=0"
    )
    private Integer dataType;

    @ApiModelProperty(value = "对齐方式：1-左对齐，2-左右居中，3-右对齐，当 type=9 时，该字段值生效", example = "0")
    private Integer align;

    @NotBlank(message = "名称标题不能为空")
    @Length(max = 10, message = "名称标题长度限制 10 个字符")
    @ApiModelProperty(value = "名称标题")
    private String name;

    @ApiModelProperty(value = "值:" +
            "当 type=2 时，val为字符串类型的数组对象" +
            "当 type=3 && dataType=1 时，val的值为[int]类型数组对象，数组值为：1-商品品牌，2-商品分类，3-商品名称，4-商品型号，其他类型的为具体名称的值；")
    private Object val;

    @NotNull(message = "是否显示项不能为空")
    @ApiModelProperty(value = "是否显示：false-隐藏，true-显示", required = true, example = "true")
    private Boolean show;

    public CodeScanDetailContentSetVo() {
    }

    public CodeScanDetailContentSetVo(Integer dataType, Integer align, String name, Object val, Boolean show) {
        this.dataType = dataType;
        this.align = align;
        this.name = name;
        this.val = val;
        this.show = show;
    }

    public CodeScanDetailContentSetVo(Integer dataType, String name, Object val, Boolean show) {
        this.dataType = dataType;
        this.align = 0;
        this.name = name;
        this.val = val;
        this.show = show;
    }

    public CodeScanDetailContentSetVo(String name, Object val, Boolean show) {
        this.dataType = 0;
        this.align = 0;
        this.name = name;
        this.val = val;
        this.show = show;
    }
}
